package com.zac.coroutine.simpleUtils

/**
 * author zac
 * date 2025/6/20
 *
 */
import java.io.File

/**
 * 批量重命名本地文件夹中的图片文件
 * @param folderPath 目标文件夹路径（如："C:\\Users\\YourName\\Pictures" 或 "/Users/YourName/Pictures"）
 * @param prefix 新文件名前缀（如："vacation_"）
 * @param startNumber 起始编号（默认为1）
 * @param extension 文件扩展名过滤（如："jpg", "png"，为空则处理所有文件）
 */
fun batchRenameLocalImages(
    folderPath: String,
    prefix: String = "img_",
    startNumber: Int = 1,
    extension: String? = null
) {
    val folder = File(folderPath)

    // 检查文件夹是否存在
    if (!folder.exists() || !folder.isDirectory) {
        println("❌ 错误：文件夹不存在或不是目录 - $folderPath")
        return
    }

    // 获取所有符合条件的文件（按名称排序）
    val files = folder.listFiles()
        ?.filter { file ->
            file.isFile && (extension == null || file.name.endsWith(".$extension", ignoreCase = true))
        }
        ?.sortedBy { it.name }
        ?: emptyList()

    if (files.isEmpty()) {
        println("⚠️ 没有找到符合条件的文件（扩展名: ${extension ?: "全部"}）")
        return
    }

    println("📁 文件夹: ${folder.absolutePath}")
    println("🖼️ 找到 ${files.size} 个文件，准备重命名...")

    var counter = startNumber
    var successCount = 0

    files.forEach { file ->
        val newName = "$prefix${counter.toString().padStart(3, '0')}.${file.extension}"
        val newFile = File(file.parent, newName)

        // 避免覆盖已存在的文件
        if (newFile.exists()) {
            println("⏩ 跳过：${newFile.name} 已存在")
            counter++
            return@forEach
        }

        // 执行重命名
        val isRenamed = file.renameTo(newFile)
        if (isRenamed) {
            println("✅ ${file.name} → $newName")
            successCount++
        } else {
            println("❌ 重命名失败：${file.name}")
        }
        counter++
    }

    println("\n🎉 完成！成功重命名 $successCount/${files.size} 个文件")
}

// 示例用法
fun main() {
    // 示例1：重命名 Windows 上的图片
    batchRenameLocalImages(
        folderPath = "C:\\Users\\YourName\\Pictures\\Vacation",
        prefix = "vacation_",
        startNumber = 1,
        extension = "jpg"
    )

    // 示例2：重命名 macOS/Linux 上的图片
    // batchRenameLocalImages(
    //     folderPath = "/Users/YourName/Pictures/Events",
    //     prefix = "event_",
    //     startNumber = 1,
    //     extension = "png"
    // )
}